package main

import (
	"go-the-way-of-learning/demo/src/demo/concurrency/context"
	"os"
	"os/signal"
)

func main() {
	// 管道测试：
	//channel.Communication()
	//channel.ConcurrentSync()
	//channel.NoticeAndMultipType()

	// 原子操作测试：
	//atomic.AtomicCase()
	//atomic.AtomicCase1()
	//atomic.AtomicCase2()

	// context 测试：
	//context.ContextCase() // 输出2个 协程退出
	context.ContextCase2()

	// 上面函数中有子协程，主程序立马结束子协程还没来得及执行，就被结束了，所以定义信号量
	ch := make(chan os.Signal, 0)
	signal.Notify(ch, os.Interrupt, os.Kill) // 通知
	<-ch                                     // 读数据会阻塞
}
